docs(submitqueue): combine predictor into Scorer - #682
Conversation
## Summary ### Why? Speculation ranks paths on the scorer's price, which only reflects the change (lines, files) and ignores what the run has since observed — a passed build, a failed build, batch state. The predictor design needs a written contract before the implementation lands. ### What? Adds doc/rfc/submitqueue/outcome-predictor.md: scorer vs predictor, the four YAML factors and what their values mean, which path results count as evidence, and rejected alternatives. Links it from doc/rfc/index.md. ## Test Plan Docs-only change.
## Summary ### Why? The RFC's rejected-options list used implementation shorthand and included alternatives already explained elsewhere, making the design tradeoffs difficult to evaluate without branch context. ### What? Keep the four alternatives reviewers are likely to raise and state each rejected option, why it fails, and the selected design. Remove redundant and scorer-specific entries.
451805e to
3227132
Compare
## Summary ### Why? The outcome predictor RFC described failed-path evidence and ranking differently from the path-set identity and best-first behavior, while older speculation RFCs still assigned dynamic pricing to the scorer. ### What? Document that prediction applies to unresolved dependencies, failed all-succeeds evidence applies once, neutral factors preserve exact scorer prices, and factors must be finite. Update the existing speculation RFCs to consistently describe predictor-based ranking and state-aware pricing.
Document per-queue factor inheritance and the shared batch/path-set snapshot consumed by best-first ranking.
01a9de2 to
9696e21
Compare
sbalabanov
left a comment
There was a problem hiding this comment.
- Is predictor a first class abstraction (i.e. an interface) or implementation detail of the generator?
- Let's discuss as an alternative to have all the decisions inside scorer. Scorer is called for each batch anyways? Why can't be made evidence-aware?
- The proposed implementation of the predictor is somewhat hard to read. Can we frame it as a linear regression model with defined features and configured weights? What in the proposal does not fit into a definition of LGM?
Fold ranking into one Score(ctx, batch, paths). Evidence is the scorer; heuristic/composite are the nested base. Frame the revision as a configured logit-linear model.
|
Agreed on all three — the stack now does (1)+(2) as one Scorer, and (3) is documented on that impl.
The rewrite is in this PR; impl / wiring / demo are #683, #684, #686. |
| @@ -0,0 +1,126 @@ | |||
| # Outcome Scorer | |||
There was a problem hiding this comment.
Predictor is gone, file name still specifies it
Summary
Why?
Ranking only needs one number per unresolved batch. A sibling Predictor factory duplicated the per-queue seam and made evidence look like a second public extension. The review asked for one ranking interface, framed as a logit-linear model.
What?
Scorer is the ranking extension:
Score(ctx, batch, paths). Evidence is the default impl wrapping a nested base (heuristic or composite). YAML istype: evidenceplusfactorsplusbase. The revision islogit(p') = logit(p_base) + Σ w_i x_iwith configured weights (w_i = log(factor_i)), not a fitted GLM.Test Plan
Docs-only change.
Issues